<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<title>Europe Quicky Weather Answers Project</title>
	</head>
	<body bgcolor='#82CAFA' align='center'>
		</br>
		<h1>Europe Quicky Weather Readme</h1>
		<table border='3' bgcolor='#E0FFFF' cellpadding='4'align='center' width='70%'>
			<tr>
				<td colspan='2' align='center' bgcolor='#C3FDB8'><b><u>Developed by:</u></br> 
				Dor Shaish</br>Naama Sharony-Efraim</b></td>
			<tr>
				<td width='150'>1. Goals</td>
				<td>
				<b>Program A - WeatherModule</b></br>
				This program approaches the Google Weather database and retrieves the weather
				conditions in a list of selected cities in Europe.</br>
				When this program is created it creates an instance of the WeatherFetcher (singleton)
				Which is the one that actually creates a request to the server and fetches all subsequent 
				requests(From the list of countries we need to individually query a list of cities for each country
				and to each city of that country individually create a query for the weather).</br>
				The WeatherModule saves the data as a field of type WeatherFetcher and all the calculations
				are performed in the module with the fetcher's data base.</br></br>
				<b>Program B - WeatherApp</b></br>
				This program allows the user to query the European weather in order to 
				plan a quick trip to Europe.</br>
				The user receives a menu and an option list from which he chooses, his query is sent to the WeatherModule
				for analysis and from there we call the WeatherDisplay which is in charge of the view, meaning the HTML
				printer.  
				</td>
			</tr>
			<tr>
				<td>2. Analysis process</td>
				<td>
				The WeatherFetcher module when instantiated, reads the supported list of countries from a
				file.</br> It then send a request for each country to get it's cities list. for each city in that country 
				it then sends a request for that cities weather.</br> (Don't ask us why, thats the way Google chose their API).</br>
				After each city's weather is queried the result is saved in the WeatherFetcher data structs.</br>
				If a program wishes to use this WeatherFetcher it need just to create a field which is of the class type.
				On each query the weatherModule iterates over the data base and fetches the requested results.</br>
				The results are appended to an HTML results file.
				</td>
			</tr>
			<tr>
				<td>3. Input format</td>
				<td>The data received is saved as :</br>
				1. A dictionary in which the key is: ("city name","Country Code").</br>
				2. The Value of each key is a list where the index comprise the day: </br>
					0 - Current , 1 - Tomorrow , 2 - The day after tomorrow , 3 - 3 days from now.</br>
				3. In each Cell of the list there is a dictionary.</br>
				4. The keys of the cells are the attribute's name from the result XML(temp high, temp low...).</br>
				5. Note that there is a difference between the fields names according to the days so we that is
				why we chose to represent it like that.
				</td>
			</tr>
			<tr>
				<td width='100'>4. Supported queries</td>
				<td><b>The following queries are available:</b></br>
				1: Find out which cities will have the weather you wish for</br>
				2: Which cities has no rain in the next 3 days?</br>
				3: What is the current weather in a specific city</br>
				4: What will be the weather in the next 3 days in a specific city?</br>
				5: Today's average, maximum and minimum temperatures in Europe</br></br>
				The variety of these queries allows anyone who wishes to go to a
				short visit in Europe in the coming days to figure out what is the best
				destination, according to his own needs.
				</td>
			</tr>
			<tr>
				<td width='100'>5. Running the application</td>
				<td><b>Instructions:</b></br>
				Run the weatherApp.py file.
				Make sure all the other files are present including the countries.txt
				</td>
			</tr>
		</table>
	</body>
</html>